﻿using System.Collections.Generic;
using Zadani09.db.DAO;
using System.Linq;

namespace Zadani09.db.DAOimpl
{
    public class GalerieDAOmysql : AbstractDAO, IGalerieDAO
    {

        public GalerieDAOmysql()
            : base()
        {
        }

        public void create(Galerie galerie)
        {
            initiateConnection();

            db.Galerie.InsertOnSubmit(galerie);
            db.SubmitChanges();

            closeConnection();
        }

        public Galerie load(string id)
        {
            initiateConnection();

            uint idg = uint.Parse(id);

            var result = from g in db.Galerie
                         where g.IDGalerie == idg
                         select new Galerie()
                         {
                             IDGalerie = g.IDGalerie,
                             Jmeno = g.Jmeno,
                             Popis = g.Popis,
                             DlouhyPopis = g.DlouhyPopis,
                             Mesto = g.Mesto,
                             Popisne = g.Popisne,
                             PSC = g.PSC,
                             Ulice = g.Ulice
                         };


            closeConnection();

            Galerie nahranaGalerie = null;

            List<Galerie> list = new List<Galerie>();

            foreach (var item in result)
            {
                list.Add(item);
            }


            if (list.Count > 1 || list.Count < 1)
            {
                //throw exeption nejakou...
                nahranaGalerie = null;
            }
            else
            {
                nahranaGalerie = list.First<Galerie>();
            }


            return nahranaGalerie;
        }

        public void delete(Galerie galerie)
        {
            initiateConnection();

            db.Galerie.Attach(galerie);
            db.Galerie.DeleteOnSubmit(galerie);

            db.SubmitChanges();

            closeConnection();
        }


        public void delete(string id)
        {

            Galerie galerie = new Galerie();
            galerie.IDGalerie = uint.Parse(id);
       
            this.delete(galerie);

        }

        public void update(Galerie nova)
        {
            initiateConnection();

            uint id = nova.IDGalerie;

            var updateQ = db.Galerie.First(e => e.IDGalerie == id);

            updateQ.Jmeno = nova.Jmeno;
            updateQ.Popis = nova.Popis;
            updateQ.DlouhyPopis = nova.DlouhyPopis;
            updateQ.Ulice = nova.Ulice;
            updateQ.Mesto = nova.Mesto;
            updateQ.Popisne = nova.Popisne;
            updateQ.PSC = nova.PSC;

            db.SubmitChanges();


            closeConnection();
        }

        public List<Galerie> loadList(int odkud, int kolik)
        {
            initiateConnection();

            var result = from u in db.Galerie select u;

            List<Galerie> list = result.ToList<Galerie>();

            closeConnection();

            return list;
        }

   
    }
}
